Some computer systems use peer to multi-peer routing. One example of such a system is the Groove® peer-to-peer collaboration system, distributed by Microsoft Corporation. The system allows multiple users of networked computers to work cooperatively by sharing a workspace. The workspace may contain documents or other data that are used in a collaboration.
Components of the collaboration system on each user's computer maintain a copy of the shared workspace. Users may access tools that modify their copy of the workspace, such as by adding, deleting or editing documents or data. As a user makes changes to a copy of the shared workspace, components of the collaboration system on that user's computer generate messages identifying the changes. Those messages are sent to all other members of the workgroup sharing the workspace.
At the computers of the other users in the workspace, those change messages are received. Components of the collaboration system then apply the changes conveyed in the messages to the copy of the shared workspace. In this way, each user maintains a copy of the shared workspace and can experience any changes made by any other user.
In a peer-to-peer collaboration system, the change messages may be distributed using direct peer-to-peer communication. Additionally, such systems have included relay servers. When direct peer-to-peer communication was not possible, a peer initiating a message could send the message to a relay server, which would then relay it to the target peer. The relay servers could also store messages for peers that were not reachable. For example, a peer could go off line, but, upon coming back on line, could synchronize its copy of the shared workspace with other peers by downloading change messages stored on a relay server acting as its home relay server. A communication component of the peer-to-peer collaboration system determined the appropriate distribution mechanism for each message.
Some relay servers also assisted in the distribution of large messages. A peer could direct a large message to a relay server, which would then “fanout” the message by distributing it to multiple target devices.